- "disabled"
Xen PV interfaces are disabled.
+ - "no-xenstore"
+ All default Xen PV interfaces, including grant-table will be enabled but
+ xenstore will be disabled for the VM.
+
If the xen,enhanced property is present with no value, it defaults
to "enabled". If the xen,enhanced property is not present, PV
interfaces are disabled.
goto err;
}
- if ( kinfo->dom0less_enhanced )
+ if ( kinfo->dom0less_feature & DOM0LESS_ENHANCED_NO_XS )
{
ret = make_hypervisor_node(d, kinfo, addrcells, sizecells);
if ( ret )
(rc == 0 && !strcmp(dom0less_enhanced, "enabled")) )
{
if ( hardware_domain )
- kinfo.dom0less_enhanced = true;
+ kinfo.dom0less_feature = DOM0LESS_ENHANCED;
else
- panic("Tried to use xen,enhanced without dom0\n");
+ panic("At the moment, Xenstore support requires dom0 to be present\n");
}
+ else if ( rc == 0 && !strcmp(dom0less_enhanced, "no-xenstore") )
+ kinfo.dom0less_feature = DOM0LESS_ENHANCED_NO_XS;
if ( vcpu_create(d, 0) == NULL )
return -ENOMEM;
if ( rc < 0 )
return rc;
- if ( kinfo.dom0less_enhanced )
+ if ( kinfo.dom0less_feature & DOM0LESS_XENSTORE )
{
ASSERT(hardware_domain);
rc = alloc_xenstore_evtchn(d);
#include <xen/device_tree.h>
#include <asm/setup.h>
+/*
+ * List of possible features for dom0less domUs
+ *
+ * DOM0LESS_ENHANCED_NO_XS: Notify the OS it is running on top of Xen. All the
+ * default features (excluding Xenstore) will be
+ * available. Note that an OS *must* not rely on the
+ * availability of Xen features if this is not set.
+ * DOM0LESS_XENSTORE: Xenstore will be enabled for the VM. This feature
+ * can't be enabled without the
+ * DOM0LESS_ENHANCED_NO_XS.
+ * DOM0LESS_ENHANCED: Notify the OS it is running on top of Xen. All the
+ * default features (including Xenstore) will be
+ * available. Note that an OS *must* not rely on the
+ * availability of Xen features if this is not set.
+ */
+#define DOM0LESS_ENHANCED_NO_XS BIT(0, U)
+#define DOM0LESS_XENSTORE BIT(1, U)
+#define DOM0LESS_ENHANCED (DOM0LESS_ENHANCED_NO_XS | DOM0LESS_XENSTORE)
+
struct kernel_info {
#ifdef CONFIG_ARM_64
enum domain_type type;
/* Enable pl011 emulation */
bool vpl011;
- /* Enable PV drivers */
- bool dom0less_enhanced;
+ /* Enable/Disable PV drivers interfaces */
+ uint16_t dom0less_feature;
/* GIC phandle */
uint32_t phandle_gic;